/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the 'License');
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { EngineCapabilityHint } from '~/extensions';

/**
 * This should be part of the DSL interface, i.e. placed under src/extensions/hint,
 * so that the DSL can provide type hint for the engine capability. However, as this
 * is a mock one, it is placed here.
 */

export interface MockHint extends EngineCapabilityHint {
    config: MockConfig;
    native: MockNative;
    issue: MockIssue;
    issueTemplate: MockIssueTemplate;
}

/**
 * Represent the native issue report.
 */
export interface MockIssue {
    line: number;
    message: string;
}

export interface MockIssueTemplate {
    /**
     * Available variables: line.
     *
     * The best case, is to be able to reference any property in the context.
     */
    message: string;
}

/**
 * Represent the native configuration.
 */
export interface MockConfig {
    ignoreLines?: number[];
}

/**
 * Represents native properties supported by the specific engine only.
 * i.e. properties that are not compatible with other engines.
 */
export interface MockNative {
    version: string;
}
